The present invention relates to improving the efficiency with which Java applications are transferred between platforms and with which such applications are developed. More specifically, the present invention provides an extension of the JVM, hereinafter referred to as the Inttop virtual machine extension or VMX, which maintains attribute data typically encapsulated in an object separate from the object thereby realizing a number of efficiencies with regard to object instantiation, the transfer of information between server and client platforms, and the development of Java-based applications.
In hypertext markup language (HTML) applications, each time the user of a client machine selects hypertext on, for example, a web page, the server supporting that page transmits or "pushes" an entirely new page over the communication link between the machines, e.g., the Internet, which includes an HTML file and any required image files. With the size of these pages being relatively large and the amount of traffic on the World Wide Web ever increasing, it is not difficult to appreciate the transmission bandwidth limitations associated with this technology. Moreover, given the fact that the main function of HTML is the rendering of objects, its utility with regard to serious Internet applications is limited. Thus, HTML is not a particularly powerful programming tool.
The JVM and the Java programming language represent another technique by which interactive content may be created and transmitted between client and server platforms. Java is, at least potentially, more powerful than HTML with respect to the creation of Internet applications of any real complexity. However, as will be discussed, Java has some significant limitations in this regard.
Initially, when a client platform requests that a particular Java program, i.e., application or applet, be downloaded from a remote server platform, the client receives a Java program file which includes Java subclass definition files for each Java subclass employed by the requested program. If a subclass definition file in the requested program file corresponds to a Java class which is not already available on the client machine, the Java class file must also be downloaded. A subclass definition file defines the internal and external behavior of a particular instance of a Java object class. A Java applet may use several different instances of the Java class "button". A typical web page may include, for example, an "OK" button, a "CANCEL" button and a "HELP" button. Therefore such a page would need to have a subclass definition file for each of these buttons which fully specifies the attributes and behaviors of the associated button. This is the case even though much of the attribute information across the three subclasses is the same. Thus, Java's use of subclassing to create different instances of a particular Java object class represents an inefficient use of data transmission resources.
Moreover, Java represents further inefficiency with respect to the manner in which Java programs are developed. This inefficiency may be understood with reference to the button example discussed above. Each time a Java programmer wants to include a unique instance of the Java class "button" in a Java applet, he must create a new button subclass and write code which specifies each of the attributes and behaviors to be exhibited by the buttons of the new subclass. That is, for example, for each attribute of the new button subclass, the programmer must include a pair of member functions "get data" and "set data". In the case of the "OK", "CANCEL" and "HELP" buttons, much of this code is identical except, of course, for the button labels and the internal behavior triggered by selection of a particular button. As the number of object subclasses in the Java applet increases, the amount of redundant code which must be generated (and transmitted across the internet) correspondingly increases. Thus, not only does Java subclassing create unnecessarily large program files, it also represents a significant inefficiency in the expenditure of programming and application development resources.
Finally, because even the most trivial customization of a Java object class requires the creation of a Java subclass, and thus a fairly advanced knowledge of Java programming, many web page developers do not have the necessary programming experience or skill to build desirable custom features into their Java applications.
It is therefore apparent that there is a need for methods by which Java applications and objects may be transmitted between platforms, and by which applications may be developed which take advantage of information common to different instances of a particular Java object class, thereby preserving network bandwidth and programming resources. This is particularly true if the Java programming language is ever to be used for applications of any substantial size and complexity.